{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Action1 文本抄袭自动检测分析:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "如果你是某新闻单位工作人员（这里假设source=新华社），为了防止其他媒体抄袭你的文章，你打算做一个抄袭自动检测分析的工具     1）定义可能抄袭的文章来源     2）与原文对比定位抄袭的地方     原始数据：sqlResult.csv，共计89611篇     从数据库导出的文章，字段包括：id, author, source, content, feature, title, url     常用中文停用词：chinese_stopwords.txt"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1、完成聚类算法（10points）     2、完成分类算法（10points）     3、完成相似度计算，Top-N排序（10points）     4、完成代码，结果正确（30points"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import jieba\n",
    "import os"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>author</th>\n",
       "      <th>source</th>\n",
       "      <th>content</th>\n",
       "      <th>feature</th>\n",
       "      <th>title</th>\n",
       "      <th>url</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>89617</td>\n",
       "      <td>NaN</td>\n",
       "      <td>快科技@http://www.kkj.cn/</td>\n",
       "      <td>此外，自本周（6月12日）起，除小米手机6等15款机型外，其余机型已暂停更新发布（含开发版/...</td>\n",
       "      <td>{\"type\":\"科技\",\"site\":\"cnbeta\",\"commentNum\":\"37\"...</td>\n",
       "      <td>小米MIUI 9首批机型曝光：共计15款</td>\n",
       "      <td>http://www.cnbeta.com/articles/tech/623597.htm</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>89616</td>\n",
       "      <td>NaN</td>\n",
       "      <td>快科技@http://www.kkj.cn/</td>\n",
       "      <td>骁龙835作为唯一通过Windows 10桌面平台认证的ARM处理器，高通强调，不会因为只考...</td>\n",
       "      <td>{\"type\":\"科技\",\"site\":\"cnbeta\",\"commentNum\":\"15\"...</td>\n",
       "      <td>骁龙835在Windows 10上的性能表现有望改善</td>\n",
       "      <td>http://www.cnbeta.com/articles/tech/623599.htm</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>89615</td>\n",
       "      <td>NaN</td>\n",
       "      <td>快科技@http://www.kkj.cn/</td>\n",
       "      <td>此前的一加3T搭载的是3400mAh电池，DashCharge快充规格为5V/4A。\\r\\n...</td>\n",
       "      <td>{\"type\":\"科技\",\"site\":\"cnbeta\",\"commentNum\":\"18\"...</td>\n",
       "      <td>一加手机5细节曝光：3300mAh、充半小时用1天</td>\n",
       "      <td>http://www.cnbeta.com/articles/tech/623601.htm</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>89614</td>\n",
       "      <td>NaN</td>\n",
       "      <td>新华社</td>\n",
       "      <td>这是6月18日在葡萄牙中部大佩德罗冈地区拍摄的被森林大火烧毁的汽车。新华社记者张立云摄\\r\\n</td>\n",
       "      <td>{\"type\":\"国际新闻\",\"site\":\"环球\",\"commentNum\":\"0\",\"j...</td>\n",
       "      <td>葡森林火灾造成至少62人死亡 政府宣布进入紧急状态（组图）</td>\n",
       "      <td>http://world.huanqiu.com/hot/2017-06/10866126....</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>89613</td>\n",
       "      <td>胡淑丽_MN7479</td>\n",
       "      <td>深圳大件事</td>\n",
       "      <td>（原标题：44岁女子跑深圳约会网友被拒，暴雨中裸身奔走……）\\r\\n@深圳交警微博称：昨日清...</td>\n",
       "      <td>{\"type\":\"新闻\",\"site\":\"网易热门\",\"commentNum\":\"978\",...</td>\n",
       "      <td>44岁女子约网友被拒暴雨中裸奔 交警为其披衣相随</td>\n",
       "      <td>http://news.163.com/17/0618/00/CN617P3Q0001875...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>89606</th>\n",
       "      <td>5</td>\n",
       "      <td>邹峥</td>\n",
       "      <td>新华社</td>\n",
       "      <td>新华社照片，多伦多，2017年6月7日\\n（体育）（2）冰球——国家女子冰球队海外选秀在多伦...</td>\n",
       "      <td>{\"type\":\"冰球\",\"site\":\"新华社\",\"url\":\"http://home.x...</td>\n",
       "      <td>（体育）（2）冰球——国家女子冰球队海外选秀在多伦多展开</td>\n",
       "      <td>http://home.xinhua-news.com/gdsdetailxhsnew/22...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>89607</th>\n",
       "      <td>4</td>\n",
       "      <td>王衡</td>\n",
       "      <td>新华社</td>\n",
       "      <td>新华社兰州6月3日电（王衡、徐丹）记者从甘肃省交通运输厅获悉，甘肃近日集中开建高速公路、普通...</td>\n",
       "      <td>{\"type\":\"宏观经济\",\"site\":\"新华社\",\"url\":\"http://home...</td>\n",
       "      <td>（经济）甘肃集中开工35个重点交通建设项目</td>\n",
       "      <td>http://home.xinhua-news.com/gdsdetailxhsnew/22...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>89608</th>\n",
       "      <td>3</td>\n",
       "      <td>张旌</td>\n",
       "      <td>新华社</td>\n",
       "      <td>\\n\\n2017年5月29日，在法国巴黎郊外的凡尔赛宫，法国总统马克龙出席新闻发布会。（新华...</td>\n",
       "      <td>{\"type\":\"其它\",\"site\":\"新华社\",\"url\":\"http://home.x...</td>\n",
       "      <td>法国议会选举　马克龙有望获“压倒性胜利”</td>\n",
       "      <td>http://home.xinhua-news.com/gdsdetailxhsnew/22...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>89609</th>\n",
       "      <td>2</td>\n",
       "      <td>夏文辉</td>\n",
       "      <td>新华社</td>\n",
       "      <td>\\n\\n2017年5月25日，在美国马萨诸塞州剑桥市，哈佛大学毕业生在毕业典礼上欢呼。（新华...</td>\n",
       "      <td>{\"type\":\"其它\",\"site\":\"新华社\",\"url\":\"http://home.x...</td>\n",
       "      <td>哈佛大学为何取消这些新生入选资格？</td>\n",
       "      <td>http://home.xinhua-news.com/gdsdetailxhsnew/22...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>89610</th>\n",
       "      <td>1</td>\n",
       "      <td>王子江 张寒</td>\n",
       "      <td>新华社</td>\n",
       "      <td>新华社德国杜塞尔多夫６月６日电题：乒乓女球迷　\\n　　新华社记者王子江、张寒\\n　　熊老...</td>\n",
       "      <td>{\"type\":\"体育\",\"site\":\"新华社\",\"url\":\"http://home.x...</td>\n",
       "      <td>（体育）题：乒乓女球迷</td>\n",
       "      <td>http://home.xinhua-news.com/gdsdetailxhsnew/22...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>89611 rows × 7 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "          id      author                  source  \\\n",
       "0      89617         NaN  快科技@http://www.kkj.cn/   \n",
       "1      89616         NaN  快科技@http://www.kkj.cn/   \n",
       "2      89615         NaN  快科技@http://www.kkj.cn/   \n",
       "3      89614         NaN                     新华社   \n",
       "4      89613  胡淑丽_MN7479                   深圳大件事   \n",
       "...      ...         ...                     ...   \n",
       "89606      5          邹峥                     新华社   \n",
       "89607      4          王衡                     新华社   \n",
       "89608      3          张旌                     新华社   \n",
       "89609      2         夏文辉                     新华社   \n",
       "89610      1      王子江 张寒                     新华社   \n",
       "\n",
       "                                                 content  \\\n",
       "0      此外，自本周（6月12日）起，除小米手机6等15款机型外，其余机型已暂停更新发布（含开发版/...   \n",
       "1      骁龙835作为唯一通过Windows 10桌面平台认证的ARM处理器，高通强调，不会因为只考...   \n",
       "2      此前的一加3T搭载的是3400mAh电池，DashCharge快充规格为5V/4A。\\r\\n...   \n",
       "3        这是6月18日在葡萄牙中部大佩德罗冈地区拍摄的被森林大火烧毁的汽车。新华社记者张立云摄\\r\\n   \n",
       "4      （原标题：44岁女子跑深圳约会网友被拒，暴雨中裸身奔走……）\\r\\n@深圳交警微博称：昨日清...   \n",
       "...                                                  ...   \n",
       "89606  新华社照片，多伦多，2017年6月7日\\n（体育）（2）冰球——国家女子冰球队海外选秀在多伦...   \n",
       "89607  新华社兰州6月3日电（王衡、徐丹）记者从甘肃省交通运输厅获悉，甘肃近日集中开建高速公路、普通...   \n",
       "89608  \\n\\n2017年5月29日，在法国巴黎郊外的凡尔赛宫，法国总统马克龙出席新闻发布会。（新华...   \n",
       "89609  \\n\\n2017年5月25日，在美国马萨诸塞州剑桥市，哈佛大学毕业生在毕业典礼上欢呼。（新华...   \n",
       "89610  　　新华社德国杜塞尔多夫６月６日电题：乒乓女球迷　\\n　　新华社记者王子江、张寒\\n　　熊老...   \n",
       "\n",
       "                                                 feature  \\\n",
       "0      {\"type\":\"科技\",\"site\":\"cnbeta\",\"commentNum\":\"37\"...   \n",
       "1      {\"type\":\"科技\",\"site\":\"cnbeta\",\"commentNum\":\"15\"...   \n",
       "2      {\"type\":\"科技\",\"site\":\"cnbeta\",\"commentNum\":\"18\"...   \n",
       "3      {\"type\":\"国际新闻\",\"site\":\"环球\",\"commentNum\":\"0\",\"j...   \n",
       "4      {\"type\":\"新闻\",\"site\":\"网易热门\",\"commentNum\":\"978\",...   \n",
       "...                                                  ...   \n",
       "89606  {\"type\":\"冰球\",\"site\":\"新华社\",\"url\":\"http://home.x...   \n",
       "89607  {\"type\":\"宏观经济\",\"site\":\"新华社\",\"url\":\"http://home...   \n",
       "89608  {\"type\":\"其它\",\"site\":\"新华社\",\"url\":\"http://home.x...   \n",
       "89609  {\"type\":\"其它\",\"site\":\"新华社\",\"url\":\"http://home.x...   \n",
       "89610  {\"type\":\"体育\",\"site\":\"新华社\",\"url\":\"http://home.x...   \n",
       "\n",
       "                               title  \\\n",
       "0               小米MIUI 9首批机型曝光：共计15款   \n",
       "1         骁龙835在Windows 10上的性能表现有望改善   \n",
       "2          一加手机5细节曝光：3300mAh、充半小时用1天   \n",
       "3      葡森林火灾造成至少62人死亡 政府宣布进入紧急状态（组图）   \n",
       "4           44岁女子约网友被拒暴雨中裸奔 交警为其披衣相随   \n",
       "...                              ...   \n",
       "89606   （体育）（2）冰球——国家女子冰球队海外选秀在多伦多展开   \n",
       "89607          （经济）甘肃集中开工35个重点交通建设项目   \n",
       "89608           法国议会选举　马克龙有望获“压倒性胜利”   \n",
       "89609              哈佛大学为何取消这些新生入选资格？   \n",
       "89610                   （体育）题：乒乓女球迷　   \n",
       "\n",
       "                                                     url  \n",
       "0         http://www.cnbeta.com/articles/tech/623597.htm  \n",
       "1         http://www.cnbeta.com/articles/tech/623599.htm  \n",
       "2         http://www.cnbeta.com/articles/tech/623601.htm  \n",
       "3      http://world.huanqiu.com/hot/2017-06/10866126....  \n",
       "4      http://news.163.com/17/0618/00/CN617P3Q0001875...  \n",
       "...                                                  ...  \n",
       "89606  http://home.xinhua-news.com/gdsdetailxhsnew/22...  \n",
       "89607  http://home.xinhua-news.com/gdsdetailxhsnew/22...  \n",
       "89608  http://home.xinhua-news.com/gdsdetailxhsnew/22...  \n",
       "89609  http://home.xinhua-news.com/gdsdetailxhsnew/22...  \n",
       "89610  http://home.xinhua-news.com/gdsdetailxhsnew/22...  \n",
       "\n",
       "[89611 rows x 7 columns]"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 数据加载\n",
    "news = pd.read_csv('sqlResult.csv',encoding='gb18030')\n",
    "news"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>author</th>\n",
       "      <th>source</th>\n",
       "      <th>content</th>\n",
       "      <th>feature</th>\n",
       "      <th>title</th>\n",
       "      <th>url</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>100</th>\n",
       "      <td>89517</td>\n",
       "      <td>NaN</td>\n",
       "      <td>中国证券报?中证网</td>\n",
       "      <td>NaN</td>\n",
       "      <td>{\"type\":\"公司\",\"site\":\"中证网\",\"commentNum\":\"0\",\"jo...</td>\n",
       "      <td>天和防务股东未来6个月内计划减持不超过480万股公司股份</td>\n",
       "      <td>http://www.cs.com.cn/ssgs/gsxw/201706/t2017062...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>103</th>\n",
       "      <td>89514</td>\n",
       "      <td>NaN</td>\n",
       "      <td>中国证券报?中证网</td>\n",
       "      <td>NaN</td>\n",
       "      <td>{\"type\":\"公司\",\"site\":\"中证网\",\"commentNum\":\"0\",\"jo...</td>\n",
       "      <td>晶盛机电调整限制性股票回购价格</td>\n",
       "      <td>http://www.cs.com.cn/ssgs/gsxw/201706/t2017062...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>997</th>\n",
       "      <td>88620</td>\n",
       "      <td>NaN</td>\n",
       "      <td>央广网</td>\n",
       "      <td>NaN</td>\n",
       "      <td>{\"type\":\"时事要闻\",\"site\":\"参考消息\",\"commentNum\":\"0\",...</td>\n",
       "      <td>[主播不在家]第二季：主播陈亮体验垃圾清运</td>\n",
       "      <td>http://www.cankaoxiaoxi.com/china/20170623/214...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1273</th>\n",
       "      <td>88344</td>\n",
       "      <td>NaN</td>\n",
       "      <td>央广网</td>\n",
       "      <td>NaN</td>\n",
       "      <td>{\"type\":\"IT业界\",\"site\":\"参考消息\",\"commentNum\":\"0\",...</td>\n",
       "      <td>LKK洛可可：想象力经济时代或已到来</td>\n",
       "      <td>http://www.cankaoxiaoxi.com/science/20170610/2...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1282</th>\n",
       "      <td>88335</td>\n",
       "      <td>NaN</td>\n",
       "      <td>央广网</td>\n",
       "      <td>NaN</td>\n",
       "      <td>{\"type\":\"IT业界\",\"site\":\"参考消息\",\"commentNum\":\"0\",...</td>\n",
       "      <td>CES2017：京东发布两款叮咚智能音箱新品 开放Alpha平台</td>\n",
       "      <td>http://www.cankaoxiaoxi.com/science/20170610/2...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         id author     source content  \\\n",
       "100   89517    NaN  中国证券报?中证网     NaN   \n",
       "103   89514    NaN  中国证券报?中证网     NaN   \n",
       "997   88620    NaN        央广网     NaN   \n",
       "1273  88344    NaN        央广网     NaN   \n",
       "1282  88335    NaN        央广网     NaN   \n",
       "\n",
       "                                                feature  \\\n",
       "100   {\"type\":\"公司\",\"site\":\"中证网\",\"commentNum\":\"0\",\"jo...   \n",
       "103   {\"type\":\"公司\",\"site\":\"中证网\",\"commentNum\":\"0\",\"jo...   \n",
       "997   {\"type\":\"时事要闻\",\"site\":\"参考消息\",\"commentNum\":\"0\",...   \n",
       "1273  {\"type\":\"IT业界\",\"site\":\"参考消息\",\"commentNum\":\"0\",...   \n",
       "1282  {\"type\":\"IT业界\",\"site\":\"参考消息\",\"commentNum\":\"0\",...   \n",
       "\n",
       "                                 title  \\\n",
       "100       天和防务股东未来6个月内计划减持不超过480万股公司股份   \n",
       "103                    晶盛机电调整限制性股票回购价格   \n",
       "997              [主播不在家]第二季：主播陈亮体验垃圾清运   \n",
       "1273                LKK洛可可：想象力经济时代或已到来   \n",
       "1282  CES2017：京东发布两款叮咚智能音箱新品 开放Alpha平台   \n",
       "\n",
       "                                                    url  \n",
       "100   http://www.cs.com.cn/ssgs/gsxw/201706/t2017062...  \n",
       "103   http://www.cs.com.cn/ssgs/gsxw/201706/t2017062...  \n",
       "997   http://www.cankaoxiaoxi.com/china/20170623/214...  \n",
       "1273  http://www.cankaoxiaoxi.com/science/20170610/2...  \n",
       "1282  http://www.cankaoxiaoxi.com/science/20170610/2...  "
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "news[news.content.isna()].head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(87054, 7)"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Remove missing values\n",
    "news = news.dropna(subset=['content'])\n",
    "news.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true,
    "jupyter": {
     "outputs_hidden": true
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['，',\n",
       " '的',\n",
       " '。',\n",
       " '、',\n",
       " '在',\n",
       " '了',\n",
       " '是',\n",
       " '\\u3000',\n",
       " '“',\n",
       " '”',\n",
       " '和',\n",
       " '年',\n",
       " '月',\n",
       " '：',\n",
       " '也',\n",
       " '）',\n",
       " '为',\n",
       " '（',\n",
       " '有',\n",
       " '%',\n",
       " '日',\n",
       " '将',\n",
       " '中',\n",
       " '-',\n",
       " '到',\n",
       " '与',\n",
       " '对',\n",
       " ':',\n",
       " '\\xa0',\n",
       " '上',\n",
       " '都',\n",
       " '等',\n",
       " '不',\n",
       " '他',\n",
       " '》',\n",
       " '《',\n",
       " '就',\n",
       " '但',\n",
       " '我',\n",
       " '而',\n",
       " '这',\n",
       " '会',\n",
       " '并',\n",
       " '；',\n",
       " '被',\n",
       " '后',\n",
       " '人',\n",
       " '从',\n",
       " '还',\n",
       " '1',\n",
       " '3',\n",
       " '6',\n",
       " '以',\n",
       " '新',\n",
       " '说',\n",
       " '7',\n",
       " '2',\n",
       " '要',\n",
       " '5',\n",
       " '？',\n",
       " '更',\n",
       " '于',\n",
       " '个',\n",
       " '10',\n",
       " '大',\n",
       " '时',\n",
       " '4',\n",
       " '多',\n",
       " '/',\n",
       " '让',\n",
       " '其',\n",
       " ')',\n",
       " '(',\n",
       " '很',\n",
       " '及',\n",
       " '下',\n",
       " '',\n",
       " '能',\n",
       " '—',\n",
       " '或',\n",
       " '该',\n",
       " '她',\n",
       " '比',\n",
       " '8',\n",
       " '元',\n",
       " '12',\n",
       " '已',\n",
       " '向',\n",
       " '做',\n",
       " '来',\n",
       " '前',\n",
       " '由',\n",
       " '好',\n",
       " '.',\n",
       " '称',\n",
       " '给',\n",
       " '最',\n",
       " '11',\n",
       " '·',\n",
       " '据',\n",
       " '着',\n",
       " '又',\n",
       " '至',\n",
       " '9',\n",
       " '20',\n",
       " '！',\n",
       " '[',\n",
       " ']',\n",
       " '去',\n",
       " '可',\n",
       " '把',\n",
       " '则',\n",
       " '',\n",
       " '一',\n",
       " '地',\n",
       " '高',\n",
       " '吗',\n",
       " '30',\n",
       " '所',\n",
       " '分',\n",
       " '较',\n",
       " '内',\n",
       " '第',\n",
       " '里',\n",
       " '占',\n",
       " '过',\n",
       " '15',\n",
       " '曾',\n",
       " '\"',\n",
       " '再',\n",
       " '人民日报',\n",
       " '新闻网',\n",
       " '它',\n",
       " '况',\n",
       " '而且',\n",
       " '而是',\n",
       " '而外',\n",
       " '而言',\n",
       " '而已',\n",
       " '尔后',\n",
       " '反过来',\n",
       " '反过来说',\n",
       " '反之',\n",
       " '非但',\n",
       " '非徒',\n",
       " '否则',\n",
       " '嘎',\n",
       " '嘎登',\n",
       " '该',\n",
       " '赶',\n",
       " '个',\n",
       " '各',\n",
       " '各个',\n",
       " '各位',\n",
       " '各种',\n",
       " '各自',\n",
       " '给',\n",
       " '根据',\n",
       " '跟',\n",
       " '故',\n",
       " '故此',\n",
       " '固然',\n",
       " '关于',\n",
       " '管',\n",
       " '归',\n",
       " '果然',\n",
       " '果真',\n",
       " '过',\n",
       " '哈',\n",
       " '哈哈',\n",
       " '呵',\n",
       " '和',\n",
       " '何',\n",
       " '何处',\n",
       " '何况',\n",
       " '何时',\n",
       " '嘿',\n",
       " '哼',\n",
       " '哼唷',\n",
       " '呼哧',\n",
       " '乎',\n",
       " '哗',\n",
       " '还是',\n",
       " '还有',\n",
       " '换句话说',\n",
       " '换言之',\n",
       " '或',\n",
       " '或是',\n",
       " '或者',\n",
       " '极了',\n",
       " '及',\n",
       " '及其',\n",
       " '及至',\n",
       " '即',\n",
       " '即便',\n",
       " '即或',\n",
       " '即令',\n",
       " '即若',\n",
       " '即使',\n",
       " '几',\n",
       " '几时',\n",
       " '己',\n",
       " '既',\n",
       " '既然',\n",
       " '既是',\n",
       " '继而',\n",
       " '加之',\n",
       " '假如',\n",
       " '假若',\n",
       " '假使',\n",
       " '鉴于',\n",
       " '将',\n",
       " '较',\n",
       " '较之',\n",
       " '叫',\n",
       " '接着',\n",
       " '结果',\n",
       " '借',\n",
       " '紧接着',\n",
       " '进而',\n",
       " '尽',\n",
       " '尽管',\n",
       " '经',\n",
       " '经过',\n",
       " '就',\n",
       " '就是',\n",
       " '就是说',\n",
       " '据',\n",
       " '具体地说',\n",
       " '具体说来',\n",
       " '开始',\n",
       " '开外',\n",
       " '靠',\n",
       " '咳',\n",
       " '可',\n",
       " '可见',\n",
       " '可是',\n",
       " '可以',\n",
       " '况且',\n",
       " '啦',\n",
       " '来',\n",
       " '来着',\n",
       " '离',\n",
       " '例如',\n",
       " '哩',\n",
       " '连',\n",
       " '连同',\n",
       " '两者',\n",
       " '了',\n",
       " '临',\n",
       " '另',\n",
       " '另外',\n",
       " '另一方面',\n",
       " '论',\n",
       " '嘛',\n",
       " '吗',\n",
       " '慢说',\n",
       " '漫说',\n",
       " '冒',\n",
       " '么',\n",
       " '每',\n",
       " '每当',\n",
       " '们',\n",
       " '莫若',\n",
       " '某',\n",
       " '某个',\n",
       " '某些',\n",
       " '拿',\n",
       " '哪',\n",
       " '哪边',\n",
       " '哪儿',\n",
       " '哪个',\n",
       " '哪里',\n",
       " '哪年',\n",
       " '哪怕',\n",
       " '哪天',\n",
       " '哪些',\n",
       " '哪样',\n",
       " '那',\n",
       " '那边',\n",
       " '那儿',\n",
       " '那个',\n",
       " '那会儿',\n",
       " '那里',\n",
       " '那么',\n",
       " '那么些',\n",
       " '那么样',\n",
       " '那时',\n",
       " '那些',\n",
       " '那样',\n",
       " '乃',\n",
       " '乃至',\n",
       " '呢',\n",
       " '能',\n",
       " '你',\n",
       " '你们',\n",
       " '您',\n",
       " '宁',\n",
       " '宁可',\n",
       " '宁肯',\n",
       " '宁愿',\n",
       " '哦',\n",
       " '呕',\n",
       " '啪达',\n",
       " '旁人',\n",
       " '呸',\n",
       " '凭',\n",
       " '凭借',\n",
       " '其',\n",
       " '其次',\n",
       " '其二',\n",
       " '其他',\n",
       " '其它',\n",
       " '其一',\n",
       " '其余',\n",
       " '其中',\n",
       " '起',\n",
       " '起见',\n",
       " '起见',\n",
       " '岂但',\n",
       " '恰恰相反',\n",
       " '前后',\n",
       " '前者',\n",
       " '且',\n",
       " '然而',\n",
       " '然后',\n",
       " '然则',\n",
       " '让',\n",
       " '人家',\n",
       " '任',\n",
       " '任何',\n",
       " '任凭',\n",
       " '如',\n",
       " '如此',\n",
       " '如果',\n",
       " '如何',\n",
       " '如其',\n",
       " '如若',\n",
       " '如上所述',\n",
       " '若非',\n",
       " '若是',\n",
       " '啥',\n",
       " '上下',\n",
       " '尚且',\n",
       " '设若',\n",
       " '设使',\n",
       " '甚而',\n",
       " '甚么',\n",
       " '甚至',\n",
       " '省得',\n",
       " '时候',\n",
       " '什么',\n",
       " '什么样',\n",
       " '使得',\n",
       " '是',\n",
       " '是的',\n",
       " '首先',\n",
       " '谁',\n",
       " '谁知',\n",
       " '顺',\n",
       " '顺着',\n",
       " '似的',\n",
       " '虽',\n",
       " '虽然',\n",
       " '虽说',\n",
       " '虽则',\n",
       " '随',\n",
       " '随着',\n",
       " '所',\n",
       " '所以',\n",
       " '他',\n",
       " '他们',\n",
       " '他人',\n",
       " '它',\n",
       " '它们',\n",
       " '她',\n",
       " '她们',\n",
       " '倘',\n",
       " '倘或',\n",
       " '倘然',\n",
       " '倘若',\n",
       " '倘使',\n",
       " '腾',\n",
       " '替',\n",
       " '通过',\n",
       " '同',\n",
       " '同时',\n",
       " '哇',\n",
       " '万一',\n",
       " '往',\n",
       " '望',\n",
       " '为',\n",
       " '为何',\n",
       " '为了',\n",
       " '为什么',\n",
       " '为着',\n",
       " '喂',\n",
       " '嗡嗡',\n",
       " '我',\n",
       " '我们',\n",
       " '呜',\n",
       " '呜呼',\n",
       " '乌乎',\n",
       " '无论',\n",
       " '无宁',\n",
       " '毋宁',\n",
       " '嘻',\n",
       " '吓',\n",
       " '相对而言',\n",
       " '像',\n",
       " '向',\n",
       " '向着',\n",
       " '嘘',\n",
       " '呀',\n",
       " '焉',\n",
       " '沿',\n",
       " '沿着',\n",
       " '要',\n",
       " '要不',\n",
       " '要不然',\n",
       " '要不是',\n",
       " '要么',\n",
       " '要是',\n",
       " '也',\n",
       " '也罢',\n",
       " '也好',\n",
       " '一',\n",
       " '一般',\n",
       " '一旦',\n",
       " '一方面',\n",
       " '一来',\n",
       " '一切',\n",
       " '一样',\n",
       " '一则',\n",
       " '依',\n",
       " '依照',\n",
       " '矣',\n",
       " '以',\n",
       " '以便',\n",
       " '以及',\n",
       " '以免',\n",
       " '以至',\n",
       " '以至于',\n",
       " '以致',\n",
       " '抑或',\n",
       " '因',\n",
       " '因此',\n",
       " '因而',\n",
       " '因为',\n",
       " '哟',\n",
       " '用',\n",
       " '由',\n",
       " '由此可见',\n",
       " '由于',\n",
       " '有',\n",
       " '有的',\n",
       " '有关',\n",
       " '有些',\n",
       " '又',\n",
       " '于',\n",
       " '于是',\n",
       " '于是乎',\n",
       " '与',\n",
       " '与此同时',\n",
       " '与否',\n",
       " '与其',\n",
       " '越是',\n",
       " '云云',\n",
       " '哉',\n",
       " '再说',\n",
       " '再者',\n",
       " '在',\n",
       " '在下',\n",
       " '咱',\n",
       " '咱们',\n",
       " '则',\n",
       " '怎',\n",
       " '怎么',\n",
       " '怎么办',\n",
       " '怎么样',\n",
       " '怎样',\n",
       " '咋',\n",
       " '照',\n",
       " '照着',\n",
       " '者',\n",
       " '这',\n",
       " '这边',\n",
       " '这儿',\n",
       " '这个',\n",
       " '这会儿',\n",
       " '这就是说',\n",
       " '这里',\n",
       " '这么',\n",
       " '这么点儿',\n",
       " '这么些',\n",
       " '这么样',\n",
       " '这时',\n",
       " '这些',\n",
       " '这样',\n",
       " '正如',\n",
       " '吱',\n",
       " '之',\n",
       " '之类',\n",
       " '之所以',\n",
       " '之一',\n",
       " '只是',\n",
       " '只限',\n",
       " '只要',\n",
       " '只有',\n",
       " '至',\n",
       " '至于',\n",
       " '诸位',\n",
       " '着',\n",
       " '着呢',\n",
       " '自',\n",
       " '自从',\n",
       " '自个儿',\n",
       " '自各儿',\n",
       " '自己',\n",
       " '自家',\n",
       " '自身',\n",
       " '综上所述',\n",
       " '总的来看',\n",
       " '总的来说',\n",
       " '总的说来',\n",
       " '总而言之',\n",
       " '总之',\n",
       " '纵',\n",
       " '纵令',\n",
       " '纵然',\n",
       " '纵使',\n",
       " '遵照',\n",
       " '作为',\n",
       " '兮',\n",
       " '呃',\n",
       " '呗',\n",
       " '咚']"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 加载停用词表\n",
    "with open('chinese_stopwords.txt','r',encoding='utf-8') as file:\n",
    "    stopwords = [i[:-1] for i in file.readlines()]  # [:-1]取最后一个字符，目的是跳过\\n，防止取一行空一行\n",
    "stopwords"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 分词处理\n",
    "import re\n",
    "def split_text(text):\n",
    "    text = text.replace(' ','').replace('\\n','').replace('\\r','')\n",
    "    # 去掉标点*********************************************************************************************\n",
    "#     text = re.sub(\"[\\s+\\.\\!\\/_,$%^*(+\\\"\\']+|[+——！，。？、~@#￥%……&*（）]+\", \"\",text)\n",
    "    text2 = jieba.cut(text)\n",
    "    result = ' '.join([w for w in text2 if w not in stopwords])\n",
    "    return result"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'此外，自本周（6月12日）起，除小米手机6等15款机型外，其余机型已暂停更新发布（含开发版/体验版内测，稳定版暂不受影响），以确保工程师可以集中全部精力进行系统优化工作。有人猜测这也是将精力主要用到MIUI 9的研发之中。\\r\\nMIUI 8去年5月发布，距今已有一年有余，也是时候更新换代了。\\r\\n当然，关于MIUI 9的确切信息，我们还是等待官方消息。\\r\\n'"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "news.iloc[0].content"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'此外 本周 除 小米 手机 款 机型 外 机型 暂停 更新 发布 含 开发 版 体验版 内测 稳定版 暂不受 影响 确保 工程师 集中 全部 精力 进行 系统优化 工作 有人 猜测 精力 主要 用到 MIUI9 研发 之中 MIUI8 去年 发布 距今已有 一年 有余 更新换代 当然 MIUI9 确切 信息 等待 官方消息'"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "split_text(news.iloc[0].content)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {
    "collapsed": true,
    "jupyter": {
     "outputs_hidden": true
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['此外 本周 除 小米 手机 款 机型 外 机型 暂停 更新 发布 含 开发 版 体验版 内测 稳定版 暂不受 影响 确保 工程师 集中 全部 精力 进行 系统优化 工作 有人 猜测 精力 主要 用到 MIUI9 研发 之中 MIUI8 去年 发布 距今已有 一年 有余 更新换代 当然 MIUI9 确切 信息 等待 官方消息',\n",
       " '骁龙 835 唯一 Windows10 桌面 平台 认证 ARM 处理器 高通 强调 不会 只 考虑 性能 屏蔽掉 小 核心 相反 正 联手 微软 找到 一种 适合 桌面 平台 兼顾 性能 功耗 完美 方案 报道 微软 已经 拿到 一些 源码 Windows10 更好 理解 big little 架构 资料 显示 骁龙 835 一款 集成 CPU GPU 基带 蓝牙 Wi Fi SoC 传统 Wintel 方案 节省 至少 30% PCB 空间 按计划 今年 Q4 华硕 惠普 联想 首发 骁龙 835Win10 电脑 预计 均 二合一 形态 产品 当然 高通 骁龙 未来 也许 见到 三星 Exynos 联发科 华为 麒麟 小米 澎湃 进入 Windows10 桌面 平台',\n",
       " '此前 一加 3T 搭载 3400mAh 电池 DashCharge 快充 规格 5V 4A 电池 缩水 可能 刘作 虎 所说 一加 手机 市面 轻薄 大屏 旗舰 设定 按照 目前 掌握 资料 一加 手机 拥有 5.5 寸 1080P 三星 AMOLED 显示屏 6G 8GBRAM 64GB 128GBROM 双 1600 万 摄像头 备货 量 惊喜 京东 泄露 信息 一加 售价 xx99 应该 2799 2899 2999',\n",
       " '这是 18 葡萄牙 中部 佩德罗 冈 地区 拍摄 森林 大火 烧毁 汽车 新华社 记者 张立 云摄',\n",
       " '原 标题 44 岁 女子 跑 深圳 约会 网友 拒 暴雨 裸身 奔走 … … @ 深圳 交警 微博称 昨日 清晨 交警 发现 女子 赤裸 上身 行走 南坪 快速 期间 轻生 年头 一辅警 发现 赶紧 披上 黄衣 一路 劝说 事发 到底 发生 些 南 记者 带 一起 还原 现场 南 记者 龙岗 大队 坂田 中队 见到 辅警 刘青 发现 女生 辅警 一位 外表 高大 帅气 说话 略带 些 腼腆 90 青年 刘青 介绍 16 早上 36 正在 环城 南路 附近 值勤 接到 中队 一位 女子 裸身 进入 机动车 可能 危险 警情 随后 骑着 小 铁骑 沿路 寻找 大概 花 十多分钟 南坪 大道 坂田 出口 龙岗 方向 逆行 辅道 发现 女子 女子 身上 一丝不挂 地逆 车流 而行 走时 停 坐 躺 险象环生 刘青停 小 铁骑 一名 巡防 员 追 上去 发现 女子 情绪 低落 话 刘青 尝试 女子 交流 劝说 女子 离开 女子 愿意 接受 继续 缓慢 地往 南坪 快速路 主干道 走 此时 路边 已经 聚集 市民 围观 刺激 女子 情绪 刘青 巡防 员 一边 盯 女子 一边 驱赶 围观 群众 现场 还原 警方 提供 一份 视频 了解 16 早上 25 女子 出现 坂雪岗 大道 环城 南路 监控 视频 此时 女子 穿着 白色 内裤 正 坂雪岗 大道 南坪 快速 方向 缓慢 走 当时 正值 上班 高峰期 十字路口 车流 已经 排起 长队 当 女子 出现 路上 市民 纷纷 驻足 观望 不少 车辆 放慢 速度 女子 市民 观望 停下 脚步 依然 缓慢 走 当 女子 行进 十字路口 中间 一辆 货车 挡住 镜头 但是 当 女子 再次出现 镜头 发现 女子 已经 没 穿 内裤 全身 裸露 继续 朝着 南坪 快速 方向 走 记者 发现 视频 女子 周围 没有 尾随 上前 劝止 市民 大清早 路上 看到 情况 恐怕 大家 没 办法 淡定 面对 这一 情况 刘青 表示 根本 不敢 看 心里 挺 别扭 感觉 尴尬 当 刘青 跟随 女子 南坪 快速路 主干道 女子 作出 意想不到 举动 突然 靠近 护栏 上面 跳下去 刘青 赶忙 冲上去 拉住 女子 手 控制 住 远离 护栏 碍于 女子 没有 穿衣服 刘青递 衣服 女子 没 接受 衣服 扔 排水沟 继续 往前走 没 办法 刘青 只能 紧紧 拉 一只 手 后面 刘青 一路上 耐心 开导 安慰 只 听到 不断 重复 一句 话 遭遇 事 期间 不时 试图 挣脱 刘青 手要 冲向 护栏 往下跳 牵 走 大概 十多分钟 天 突然 下起 大暴雨 雨大 眼睛 睁不开 刘青 继续 瞬间 雨 透 女子 依然 愿意 接受 刘青 帮助 继续 大雨 往前走 大概 走 四十分钟 吧 女子 突然 停下 来说 想 回家 女子 接受 刘青 递过来 小 黄衣 出现 深圳 微博上 照片 女子 披着 小 黄衣 刘青 小心翼翼 旁边 走 场景 南平 快速 下来 刘青 巡防 员 女子 带到 附近 坂田 派出所 姑娘 到底 遭遇 事情 才 遭遇 事 警方 透露 女子 姓 陈 系 湖北 今年 44 岁 家属 反映 其有 精神病 史 三天 陈某 老家 深圳 约会 网友 约会 受挫 导致 情绪 异常 女子 遂 产生 轻生 念头 目前 陈某 已经 送往 深圳 精神病 医院 进行 治疗 大大 君 只 希望 姑娘 早点 康复 其实 真爱 到来 存在 年龄 限制 善良 原因 一众 网友 纷纷 交警 暖 男点 ZAN @ 弓常 yan 桦 想 问 小 哥哥 女票 @ 原谅 一辈子 浪荡 不羁 爱 萨摩耶 过不去 轻生 想想 家人 感谢 交警 蜀黍 @ 火心 聆听 心灵 点赞 交警 @ 中華云盾 警察 … … 警察 群众 需时 申出 援手 @ Tomchlee 蜀黍 帅 @ SJ 李赫海 i 交警 暖 木有 男子 迷奸 网友 拍 418 视频 女方 岁 50 岁 去年 号 上午 淮安市 涟水县 公安局 刑警大队 突然 接到 一个 奇怪 报警 电话 一名 女子 言语 不清 声称 遭到 侵害 女子 侵害 言语 不清 几个 关键词 令 接到 电话 民警 瞬间 紧张 起来',\n",
       " '受到 A股 纳入 MSCI 指数 利好 消息 刺激 A股 市场 周三 再度 上演 龙马 行情 周四 上午 金融股 白马股 表现 喜人 但是 尾盘 跳水 之后 仅 金融 板块 仍 维系 红盘 状态 分析 人士 认为 金融股 受益 MSCI 纳入 A股 低 估值 重获 资金 青睐 但是 存量 资金 博弈 格局 风格 交替 震荡 格局 料 延续 流动性 改善 经济 悲观 预期 修正 有助于 支撑 板块 大盘 指数 逐步 九 再现 周四 A股 市场 未能 延续 周三 上行 态势 两市 成交 小幅 放量 29 中信 一级 行业 收盘 仅 银行 非银行 金融 两个 行业 指数 收红 分别 上涨 1.80% 0.20% 二级 行业 来看 股份制 城商行 涨幅 最高 达到 2.22% 国有银行 上涨 0.82% 信托 上涨 0.64% 保险 板块 上涨 0.34% 证券 板块 上涨 0.06% 银行 板块 25 只 成分股 共有 21 只 收红 招商银行 涨幅 最大 上涨 6.66% 贵阳 银行 上涨 3.65% 上海银行 华夏银行 浦发银行 兴业银行 涨幅 均 超过 1.50% 非银行 金融 板块 44 只 成分股 共 17 只 个股 上涨 安信 信托 中国 太保 涨幅 居前 两名 分别 上涨 4.57% 3.04% 西水股份 华安 证券 中国 人寿 新华 保险 涨幅 均 超过 2% 券商 股多 小幅 下跌 近期 A股 市场 消息面 影响 最大 MSCI 宣布 2018 A股 纳入 MSCI 新兴 市场 指数 金融股 最大 一个 群体 国金 证券 李立峰 团队 指出 最新 方案 包含 222 只 成分股 剔除 中等 市值 非 互联互通 交易 股票 停牌 限制 标的 纳入 很多 市值 A H股 A股 MSCIEM 权重 0.5% 上升 0.73% 金融 板块 最高 达到 40.11% 泛 消费 次之 24.26% 两个 板块 涵盖 大部分 权重股 动态 来看 加入 很多 指 比高 金融公司 金融 板块 权重 增加 近一半 大部分 行业 权重 受到 稀释 A股 纳入 MSCI 这一 利好 事件 短期 市场 情绪 有所 提振 中长期 海外 增量 资金 预期 升温 短期内 市场 量 尚 不能 有效 放大 金融股 独 乐乐 情景 难以 持续 存量 博弈 格局 风格 交替 指数 震荡 格局 难 改变 光大 证券 指出 利好 并未 引起 市场 太大 热情 两市 指数 成交量 均 较为 平淡 市场 风格 出现 较大 变化 白马股 金融股 上涨 成长 股 题材股 全天 低迷 表明 市场 增量 资金 依然 很少 存量 资金 不同 板块 之间 腾挪 跷跷板 格局 指数 难有 突破 市场 中期 依旧 偏空 短期 依旧 可能 维持 震荡 格局',\n",
       " '至今 夏普 智能手机 市场 无法 排得 号 已经 完全 没落 并于 2013 退出 中国 市场 但是 今年 月份 官方 突然 宣布 回归 中国 预示 很快 夏普 新机 中国 登场 第一款 夏普 手机 登陆 中国 手机 近日 一款 型号 FS8016 夏普 神秘 新机 悄然 出现 GeekBench 跑 分库 相关 信息 了解 款 机子 并非 旗舰 定位 搭载 高通 骁龙 660 处理器 配备 4GB 内存 骁龙 660 高通 今年 最受 瞩目 芯片 采用 14 纳米 工艺 八个 Kryo260 核心 设计 集成 Adreno512GPU X12LTE 调制解调器 当前 市面上 一款 机子 采用 骁龙 660 处理器 已经 上市 销售 OPPOR11 骁龙 660 并非 旗舰 芯片 核新能 去年 骁龙 820 强 单核 改进 明显 放在 今年 仍 很多 手机 变成 高端 机 不过 OPPO 高通 签署 排他性 协议 独占 两三个 时间 考虑 夏普 测试 新机 说明 独占 时期 夏普 发布 骁龙 660 新品 按照 之前 曝光 渲染 图 了解 夏普 新机 核心 竞争 优势 全面 屏 2013 推出 全球 首款 全面 屏 手机 EDGEST302SH 至今 夏普 手机 推出 多达 28 款 全面 屏 手机 月份 媒体 沟通 会上 惠普 罗忠生 表示 我敢 打赌 之后 在座 手机 换掉 全面 屏 时代 到来 怀揣 手机 成为 传统 手机',\n",
       " '沙漠 雄鹰 震荡 有利 消化 套牢 筹码 周四 开盘 上证 50 银行 券商 蓝筹 带动 一度 涨近 2% , 沪 指 一度 站上 60 120 均线 黑天鹅 万达 电影 暴跌 拖累 , 沪深股市 绝大多数 时间 分道扬镳 14 点后 次新股 大幅 跳水 令 各大 指数 全线 收绿 存量 博弈 格局 难改 , 量 久 不见 放大 , 蓝筹 行情 不可 持续 , 短线 策略 依然 题材 为主 次新股 区域 经济 概念股 调整 压力 仍然 突出 成长 股 再次 大跌 目前 处于 底部 低位 反复 震荡 有助于 夯实 底部 目前 市场 仍属 存量 资金 博弈 短期 蓝筹股 上演 指数 行情 令 市场 承压 短期 利好 带动 蓝筹股 行情 告一段落 后期 需要 题材股 接力 来维稳 指数 走向 今日 经财 要闻 央行 上海 总部 发布 债券 通 北向 通 境外 投资者 准入 备案 业务 指引 二 我国 信用 法规 标准 研究 正在 加快 推进 三 上海 易居 房地产 研究院 发布 房贷利率 楼市 研究 报告 显示 近期 许多 城市 个人 住房贷款 利率 均 不同 程度 上涨 四 水污染 防治法 修正案 草案 二审 更大 力度 保护 水 环境 五 中国 结算 发布 开展 存量 一人 多户 休眠 工作 通知 启动 同一 投资者 开立 三户 以上 多开 账户 休眠 工作 按 中国 结算 文件 要求 23 日后 交易日 下周一 26 确认 休眠 账户 交易系统 中止 交易 六 李军 十三 五 末 上海 金融市场 交易额 达 2000 万亿 七 受 A股 纳入 MSCI 新兴 市场 指数 中国 宏观 环境 持续 稳定 双重 因素 鼓舞 富达 国际 基金 经理 马磊 表示 预计 2017 下半年 中国 股市 投资者 情绪 有望 转好 中国 股市 未来 十年 增长 主要 创新 驱动 大盘 回顾 周四 A股 市场 出现 早盘 冲高 午市 震荡 回落 尾盘 大幅 跳水 走势 盘面 看 沪 深 300 指数 盘中 创 17 新高 2000 余 只 个股 下跌 市场 分化 相当 明显 收盘 上证指数 报 3147.45 点 较前 交易日 跌 8.76 点 跌幅 0.28% 深成指 报 10265.20 点 跌 101.97 点 跌幅 0.98% 创业板 指 表现 弱 报 1798.38 点 跌幅 达到 1.44% 两市 个股 普跌 仅 400 余 只 交易 品种 上涨 计算 ST 股 未 股改 股 两市 涨停 个股 不足 只 两市 共 成交 4781 亿元 较前 交易日 大增 800 多亿元 数据 显示 , 昨日 两市 共有 主力 流出 190.57 亿元 , 一日 96.95 亿元 大增 96.27% 两市 61 行业 板块 57 遭遇 主力 抛售 , 券商 银行 板块 共有 近 13 亿元 主力 介入 , 化工行业 医药 制造 分别 遭遇 14 亿元 12.21 亿元 主力 抛售 持续 低迷 雄安 新区 抛售 力度 更是 高达 41.69 亿元 技术 分析 昨日 临近 收盘 半个 小时 沪 指 上演 高位 跳水 涨幅 全部 回吐 失守 60 均线 成交量 明显 放大 留下 长长的 上影线 跌幅 不深 个股 一地 鸡毛 沪 指自 3016 点 以来 大盘 每次 回调 相对 低点 位置 不断 抬升 大盘 冲高 乏力 出现 回落 指数 调整 空间 封住 难以 出现 大跌 总体 来说 市场 震荡 分化 格局 短期 依然 难以 打破 短线 来看 沪 指 盘中 攻克 60 均线 半年线 压力 之后 却 当日 得而复失 创业板 指则 上方 均线 压力 无法 触及 走势 无疑 投资者 心理 产生 负面影响 技术 形态 60 分钟 K 线 级别 已经 形成 背离 雏形 沪 指 跌破 3117 点 意味着 背离 成型 可能 引发 日线 级别 下跌 综合 分析 目前 指数 正 处在 压力 区间 市场 脆弱 心态 碎片 化 涨停板 主线 模糊 热点 凌乱 赚钱 效应 弱 因素 大盘 突破 掣肘 因素 昨日 尾盘 跳水 主要 以下 原因 长期 二八 分化 导致 人气 低迷 最近 一段时间 权重股 整体 走高 板块 群众 基础 弱 弹性 小 制约 绝对 涨幅 难以 形成 大面积 赚钱 效应 现在 场内 二八 轮动 非常 频繁 今天 追进 资金 明天 就要 吃套 打击 资金 积极性 市场 反弹 重要 压力 区 却 仅靠 资金 拉升 指标股 抬升 指数 这种 没有 赚钱 效应 拉 抬 可能 持久 昨日 招商银行 一度 大涨 7% 投资者 似乎 不买账 跟风盘 极少 目前 A股 一直 存量 资金 博弈 市场 指标股 吸引 资金 加码 意味着 中小 市值 品种 面临 强大 筹码 套现 压力 昨日 万达 股票 债券 莫名 齐跌 午后 复星 医药 盘中 突现 闪崩 令 市场 踩踏 事件 出现 短期 市场 受此 影响 再次 收复 上方 半年线 压力 大增 投资 建议 近期 权重 蓝筹 一直 强于 中小 创 , 上涨 始终 缺乏 有效 量 支持 存量 博弈 背景 , 后续 资金 若 无法 跟上 , 活跃 资金 或会 转战 中小 创 短线 投资者 降低 权重 配置 , 加大 中小 创中 盘子 小 股性 活跃 超跌 品种 大盘 纠缠 格局 依然 进行 , 权重股 整体 走高 , 群众 基础 弱 弹性 小 , 绝对 涨幅 有所 制约 金融 板块 大涨 促使 沪 指上 摸 3180 点 压力 位 区间 , 能否 真正 有效 突破 , 需要 观察 几日 基于 周四 K 线 组合 形态 偏向 悲观 投资者 当前 宜先 退出 观望 等待 股指 下方 获得 支撑 寻机 操作 热点 分析 粤港澳 大湾 区 论坛 期间 , 腾讯 看多 人工智能 , 百度 举办 百度 AI 开发者 大会 , 以谷歌 亚马逊 代表 互联网 巨头 一致 看好 人工智能 未来 发展 产业 创新 叠加 政策 扶持 , 人工智能 行业 景气 度 有望 维持 市场 最近 一个月 出现 次长 上影线 之前 三次 形成 周线 级别 调整 下周 月末 钱荒 效应 值得 股民 做好 应对 月初 以来 市场 始终 中小 创 为首 反弹 模式 个股 赚钱 效应 保持 周三 尾盘 权重股 快速 拉升 带来 指数 尾盘 翻红 周四 刷新 高点 个股 赚钱 效应 却 明显 降温 个股 涨少 跌 午盘 个股 跳水 加剧 这一 现象 必须 引起 重视 玉名 认为 意味着 上证 50 创新 没有 带来 个股 跟随 相反 带来 大部分 个股 跳水 受到 政策 红利 军工 板块 上周 王者 荣耀 引发 手游股 类似 出现 一日游 走势 没有 延续性 热点 更多地 来自 事件 刺激 超跌 反弹 市场 下周 进入 一个 比较 敏感 时间段 月末 季末 半年 末 容易 出现 资金 异动 实际上 美联储 加息 缩表 行为 来看 已经 意味着 紧缩 货币政策 开启 全球 央行 流行 金融市场 很难 再现 大水 漫灌 式 强刺激 中性 偏紧 政策 流动性 成为 一种 常态 基本面 来看 玉名 认为 中国 经济 仍 L 型筑底 走势 这是 一个 阶段 一段 较长 时间 意味着 没有 高速 增长 没有 增速 大幅 下滑 横盘 周期 适度 偏紧 政策 供给 侧 结构性 改革 提供 良好环境 基本面 决定 股市 只能 处于 震荡 市 周期 技术 沪 指 运行 60 均线 附近 权重股 拉升 之下 突破 之意 不过 运行 前期 肩部 区域 压力 比较 这种 单纯 依托 权重股 忽略 个股 效应 模式 能够 走多远 值得 担忧 这是 引发 资金 派发 形成 跳水 关键因素 尤其 个股 赚钱 效应 越来越 差 排除 一些 获利盘 解套 盘 选择 短线 离场 伴随 高位 资金 追涨 压力 增加 谨慎 观望 气氛 增加 导致 成交量 止步不前 玉名 认为 目前 股民 需要 对于 个股 一个 梳理 短线 反弹 近期 放量 滞涨 就要 有所 警惕 逐步 兑现 利润 选择 落袋 安 重新 等待 机会 对于 已经 进入 前期 阻力 区 密集 套牢 区 个股 应该 及时 考虑 减仓 毕竟 品种 容易 出现 再度 调整 对于 前期 涨幅 下跌 通道 已经 扭转 个股 暂时 持有 观望 昨日 回顾 主板 终于 费尽 九牛二虎之力 爬 3180 点 附近 但是 遗憾 主板 尤其 上证 50 沪 深 300 不断 创新 之际 中小 创却 依然 忍受着 无厘头 煎熬 午后 市场 更是 全线 跳水 结局 收盘 对于 市场 周五 昨日 消息面 央行 债券 通 登记 托管 实施细则 很快 发布 实施 发改委 抓紧 制定 出台 配气 价格 监管 规则 社部 月底 基本 实现 跨省 异地 就医 住院费用 直接 结算 23 成品油 迎 年内 第六次 下调 降幅 达 270 吨 国防 科工 局 推进 军工企业 混改 加快 军工 资产 证券化 进程 广电总局 要求 新浪 微博 网站 关停 视听 节目 欧美 股指 延续 涨跌 不一 走势 … 消息 面上 外围 市场 整体 稳健 国内 信息 面则 继续 不死不活 形式 预计 市场 继续 走 整理 行情 技术 分析 技术 看 市场 昨日 走势 午后 全线 跳水 主板 创新 高后 回落 创业板 继续 1800 点 附近 整理 相比 主板 显得 较为 弱势 技术 看 市场 周五 依然 不会 有大 行情 但是 二八 转换 格局 可能 随时 出现 今日 大盘 档 第一 支撑位 3130 点 第二 支撑位 3100 档 第一 压力 位 3160 点 第二 压力 位 3180 点 今日 走势 欧美 股指 高位 整理 隔夜 信息 面 依然 没有 实质性 利好 今天 继续 新股申购 情况 预计 大盘 再度 平开 小幅 低开 可能性 整体 看 今天 指数 出现 调整 可能性 日线 继续 以小阴 小阳 十字星 线 为主 随时 防止 主板 可能 出现 回调 今日 操作 昨日 市场 走势 看 依然 面子 行情 更是 中小 创 再度 推到 一个 极为 尴尬 境地 当然 在筑底 过程 很多 确定 因素 将会 愈发 明显 建议 大家 操作 继续 短期 寻求 涨幅 不大 个股 底部 放量 个股 尤其 加上 业绩 稳定 个股 最好 逢 低 介入 操作 短期 建议 执行 快 进快 出 策略 远离 短期 涨幅 过大 个股 具体操作 坚持 大涨 卖 大跌 买 不涨 跌 选择 观望 策略 昨日 市场走势 看 一次 证明 彬 哥 之前 大家 关注 3180 点 主板 可能 回调 观点 正确 主板 确实 3180 点 附近 出现 回调 对于 回调 彬哥 认为 一个 健康 事情 一个 必须 出现 事情 现在 唯一 不能 确定 主板 回调 中小 创会 不会 出现 企稳 不会 出现 投资者 操作 机会 大家 今天上午 需要 至少 需要 半天 时间 观察 市场 可能 出现 目前 行情 一点 确定 主板 将会 3180 点 附近 出现 调整 大家 万 不可 追涨 主板 个股 尤其 保险 银行 为首 上证 50 个股 周四 午后 市场 走势 看 主板 调整 势在必行 大家 做好 主板 调整 心理准备 当然 还要 做好 市场 全线 调整 心理 预期',\n",
       " '原 标题 武汉 警方 一下子 抓 808 俊男靓女 原来 每天 偷偷摸摸 干 这事 武汉 警方 一下子 抓 808 俊男靓女 原来 每天 偷偷摸摸 干 这事 大家 记得 今年 光谷 发生 一件 大事 当时 微博 朋友圈 传 疯 光谷 国际 广场 大量 白领 被捕 现场 手铐 不够 记者 深入调查 发现 抓 不是 网传 白领 一个 282 名 涉案人员 诈骗 团伙 天呐 接近 300 犯罪团伙 以为 数字 已经 够 庞大 错 震惊 武汉市公安局 通报 警方 武汉三镇 处 窝点 抓获 808 名 嫌疑人 令人 大跌眼镜 当中 大多 年青人 俊男靓女 形容 不为过 年纪 外形 不差 到底 犯 事 其实 起来 事 估计 绝大多数 碰到 网络 诈骗 涉案 电脑 800 余台 手机 2000 余部 银行卡 3000 余张 .... 涉及 账户 太 涉案 金额 目前 没 统计 出来 这是 全国 涉案人 数最多 一起 特大 网络 诈骗案 惊人 数字 背后 究竟 藏 秘密 警方 一锅端 今年 武汉 警方 获悉 塔子 湖 地区 电信 网络 诈骗 活动 多月 秘密 侦查 发现 一个 特大 网络 诈骗 犯罪团伙 原来 团伙 利用 非法 互联网 金融 平台 实施 推荐 股票 炒 期货 诈骗 处 窝点 散布 江岸 洪山 东湖 高新 硚口 江汉 个区 写字楼 涉案人员 多达 800 余名 上午 武汉 警方 组织 1000 余名 警力 分成 14 抓捕 组 首脑 分子 处 窝点 实施 突击 抓捕 行动 目前 警方 依法 刑事拘留 411 45 取保候审 该案 进一步 调查 进行 诈骗 人数 众多 诈骗 组织 进行 人员 分工 一步步 引 受害人 上钩 2015 以来 犯罪团伙 投资 组建 集团公司 总部 旗下 成立 多家 分公司 子公司 设立 人事部 财务部 行政部 机构 部门 分为 经理 分析师 业务 小组长 业务员 组织 层级 网上 发布 招聘 信息 招揽 培训 业务员 依托 虚构 互联网 金融 平台 业务员 散布 内幕消息 虚假 信息 引诱 受害人 加入 专门 QQ 群 微信群 所谓 证券公司 资深 分析师 经理 逐个 联系 受害人 引诱 受害人 交易 股票 期货 贵金属 外汇 金融 产品 受害人 若 获利 按 五五 六四 分成 若 亏损 拉入 黑名单 不再 联系 网友 热评 李晓猫 不吃 鱼 信汇 写字楼 面试 一个 这种 工作 一听 不对劲 撤 适合 嘴巴 笨 习惯 33xxzz 八百多 可能 相当 部分 不大清楚 到底 性质 工作 吧 刑法 守望者 警惕 普法 工作 预防 法律 风险 明白人 不是 钱 尤其 从事 金融 保险 银行 财务 人员 小心 触犯 刑法 … … 童颜 永在 -- 心理医生 盘 写字楼 诈骗 公司 高薪 招聘 业务人员 诱饵 实行 诈骗 顽疾 终于 揣 掉 渔船 联系 一下 朋友 看 多少 抓 The former degrees 招聘 平台 销售 会上 百分之八十 这种 工作 源头 抓起 防止 更多人 受伤 宇宇家 小 仙女 恐怖 进 一个 星期 发现 不太 对劲 尼玛 骗人 啊 ? 赶紧 跑 路 z _ 路 漫漫 ? 后来 听说 公司 跑 路 睡 饱 啊 小铭大 面试 这种 工作 培训 几天 话术 一看 套路 骗 果断 闪 这种 公司 太多 遗忘 金 叶子 碰到 骗子 找 视频 最后 打电话 骂 一顿 a 一元复始 c 天天 电话 骚扰 别人 信贷 卖房 卖 邮票 发票 社会 生活 一不留神 坑 活着 需要 理智 笑 看 世间 丑 2448337651 路上 发骗 广告 搞 高利贷 互联网 金融公司 未来 温暖 时光 属于 金融 港 街道口 … … 好多 同学 刚刚 毕业 网上 投 简历 公司 猛 联系 其实 好多 知道 这是 骗人 吧 强迫症 天蝎座 怪 咖 冉冉 彗星 宝 早上 接到 期货 霖心 金鱼 And 张蒙 不敢 找 工作 蒋 妈妈 刚回到 武汉 准备 找份 工作 看 网上 好多 这种 招聘 感觉 骗人 看 看 网友 评论 小编 一个 感觉 找 工作 一定 擦亮 双眼 不要 一时 疏忽 生活 抹 污点 俗话说 知己知彼 百战不殆 弄清 网络 诈骗 常见 手法 ? 才能 避免 上当受骗 下面 大家 奉上 防骗 攻略 遇到 诈骗 只 需 见招拆招 网络 防骗 攻略 电信 网络 诈骗 犯罪 往往 表现 六大 陷阱 物美价廉 网购 陷阱 推销产品 便利 陷阱 异性 交友 情感 陷阱 中奖 信息 惊喜 陷阱 冒充 国家 工作人员 恐吓 陷阱 钓鱼 网站 网上银行 迷惑 陷阱 下面 网络 诈骗 比较 常见 几种 类型 一起 学习 防范 骗子 无处 遁形 虚假 红包 诈骗 临近 节日 各大 电商 平台 会以 派 发红包 形式 促销 活动 预热 不法分子 趁机 微信 朋友圈 微信 群 平台 派发 虚假 红包 诱骗 大家 点击 套取 个人信息 传播 木马病毒 盗取 银行账号 识骗 方法 慎点 此类 红包 领取 链接 小心 点击 应 第一 时间 关闭 手机 网络 修改 网银 支付宝 重要 账户 密码 安全软件 查杀 木马病毒 二维码 诈骗 抢购 高峰期 网页 打开 慢 网银 交易 出现 比较 迟钝 现象 不法分子 冒充 客服 店主 单子 出现 调单 卡单 说法 幌子 故意 没有 收到 款项 欺诈 消费者 取得 信任 要求 消费者 办法 进行 转账 识骗 方法 消费者 注意 调单 卡单 激活 订单 诈骗 术语 见 此类 词语 基本 断定 对方 骗子 没有 收到 款项 问题 不会 东京 天猫 大型 网络 购物 平台 出现 钓鱼 网站 诈骗 节假日 期间 公众 购物 热情高涨 假冒 正规 电商 官方网站 在线 支付 平台 钓鱼 网站 活动 频繁 消费者 忙于 浏览 各色 商品 页面 往往 容易 忽略 链接 安全性 从而 误入 诈骗 分子 发来 虚假 钓鱼 网站 识骗 方法 陌生人 发来 商品 链接 提高警惕 谨慎 打开 如遇 网络 诈骗 应 第一 时间 属地 公安机关 报案 举报中心 举报 虚假 客服 诈骗 抢购 高峰期 网页 打开 慢 网银 交易 出现 比较 迟钝 现象 不法分子 冒充 客服 店主 单子 出现 调单 卡单 说法 幌子 故意 没有 收到 款项 欺诈 消费者 取得 信任 要求 消费者 办法 进行 转账 识骗 方法 消费者 注意 调单 卡单 激活 订单 诈骗 术语 见 此类 词语 基本 断定 对方 骗子 没有 收到 款项 问题 不会 东京 天猫 大型 网络 购物 平台 出现 预购 诈骗 不法分子 会以 提前 购 预售 诱饵 用户 发送 木马 链接 除了 网购 链接 植入 木马 钓鱼 网站 不法分子 预售 活动 做文章 骗取 买家 定金 识骗 方法 慎点 不明 链接 购物 短信 不要 轻信 请 手机 装 杀毒软件 提供 安全 上网 环境 中奖 诈骗 购物 过后 很多 人会 陆陆续续 收到 一些 商家 中奖 信息 切记 不要 随意 拨打 中奖 信息 提供 电话号码 点击 发来 网站 链接 地址 可能 手机 电脑 感染 木马病毒 识骗 方法 收到 中奖 信息 留心 一下 看一看 购买 产品 有没有 这家 产品 最好 天猫 店里 直接 卖家 联系 确认 消息 朋友圈 诈骗 缺少 第三方 监管 平台 不法分子 朋友圈 发布 虚假 低价 购物 信息 骗取 消费者 汇款 购买 识骗 方法 朋友 圈里 销售 行为 存在 取证难 查处 难 问题 建议 大家 朋友圈 买 东西 尽可能 选择 正规 第三方 支付 平台 进行 支付 避免 直接 支付 确保安全 快递 诈骗 不法分子 非法 渠道 获得 客户 信息 制作 假 快递 单 随后 冒充 快递 员 提前 联系 受骗者 虚假 货品 送到 消费者 手中 骗取钱财 识骗 方法 签收 包裹 务必 按 官方 信息 核实 对方 身份 确认 是否是 包裹 取货 之后 一定 记得 个人信息 包裹 完全 抹 避免 个人信息 泄露 退款 诈骗 不法分子 常 退款 退货 假扮 网店 客服 要求 消费者 点击 提供 钓鱼 网站 链接 盗取 持卡人 银行 密码 动态 验证码 识骗 方法 接到 网上 购物 退款 电话 短信 信息 一定 谨慎 对待 切莫 泄露 银行卡 账号 户名 动态 验证码 个人信息 提醒 大家 保护 账户 信息 遇到 情况 一定 及时 报警 武汉 破 特大 网络 诈骗案 抓 808 内幕消息 骗人 武汉市公安局 澎湃 新闻 通报 该局 破获 一起 特大 网络 诈骗案 抓获 包括 卢某 熊某 名 首脑 分子 在内 涉案人员 808 名 查扣 涉案 电脑 800 余台 手机 2000 余部 银行卡 3000 余张 据悉 这是 全国 打击 利用 非法 互联网 金融 平台 实施 诈骗 犯罪 查获 涉案人 数最多 一起 案件',\n",
       " '21 A股 纳入 MSCI 指数 尘埃落定 当天 寄予厚望 券商 股 并未 扛起 反弹 大旗 22 222 只 纳入 MSCI 指数 A股 股票 银行 股 全线 飘红 招商银行 领涨 涨幅 达 6.66% 保险 股 券商 股 表现 可圈可点 222 只 股票 金融 板块 股票 数量 总 市值 比均 位居 首位 分析 人士 指出 银行 股 股息 率高 估值 低 收益 稳定 对于 资金量 较大 投资 期限 较长 资金 存在 相当 吸引力 国际 经验 来看 纳入 MSCI 指数 相关 股市 投资者 风格 更加 稳健 更加 偏好 业绩 稳定 流动性 风险 低 优质 蓝筹股 银行 股具 估值 优势 22 A股 金融股 表现 强势 板块 涨幅 达 1.19% 平安 证券 统计 222 只 纳入 MSCI 指数 A股 股票 金融 板块 市值 比达 41.32% 银行 证券 保险 子 板块 市值 分别 27.30% 7.75% 6.24% 多家 券商 研究 报告 认为 银行 金融股 受到 纳入 MSCI 指数 提振 未来 境外 资金 进入 金融股 华泰 证券 表示 纳入 MSCI 指数 之后 A股 迎来 约 850 亿元 人民币 增量 资金 考虑 222 只 股票 金融股 市值 比约 42% 并且 金融股 体量 流动性 强 估值 低 符合 境外 资金 偏好 有望 迎来 超过 权重 资金 比例 预计 金融股 有望 吸引 增量 资金 约 350 亿元 人民币 新富 资本 证券 投资 中心 研究 总监 廖 云龙 认为 银行 股 脱颖而出 主要 原因 低 估值 市场 预期 银行 股 基本面 改善 市场 整体 风格 偏 保守 偏爱 低 估值 22 银行 股 大涨 市场 风格 延续 投资者 龙头股 低 估值 防御性 选择 东方 财富 choice 统计 一季度 末 QFII 重仓股 数据 显示 银行 股是 QFII 关注 重点 五十 重仓股 北京 银行 南京 银行 宁波 银行 上海银行 榜上有名']"
      ]
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "corpus = list(map(split_text,[str(i) for i in news.content]))#\n",
    "corpus[0:10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\u001b[1;31mType:\u001b[0m        list\n",
       "\u001b[1;31mString form:\u001b[0m ['此外 本周 除 小米 手机 款 机型 外 机型 暂停 更新 发布 含 开发 版 体验版 内测 稳定版 暂不受 影响 确保 工程师 集中 全部 精力 进行 系统优化 工作 有人 猜测 精力 主 <...>  再见 杜塞 茶茶 \\\\ n 熊 老师 最后 一条 朋友圈 发 丁宁 刘诗雯 赢得 女双 冠军 照片 \\\\ n 懂事 之前 情动 以后 长 不过 一天 留不住 算不出 流 写道 完 \\\\ n']\n",
       "\u001b[1;31mLength:\u001b[0m      89611\n",
       "\u001b[1;31mDocstring:\u001b[0m  \n",
       "Built-in mutable sequence.\n",
       "\n",
       "If no argument is given, the constructor creates a new empty list.\n",
       "The argument must be an iterable if specified.\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "corpus?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pickle\n",
    "# 保存到文件\n",
    "# with open('corpus.pkl', 'wb') as file:\n",
    "#     pickle.dump(corpus, file)\n",
    "\n",
    "# 加载文件\n",
    "corpus = []\n",
    "with open('corpus.pkl','rb') as file:\n",
    "    corpus = pickle.load(file)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['此外 本周 除 小米 手机 款 机型 外 机型 暂停 更新 发布 含 开发 版 体验版 内测 稳定版 暂不受 影响 确保 工程师 集中 全部 精力 进行 系统优化 工作 有人 猜测 精力 主要 用到 MIUI9 研发 之中 MIUI8 去年 发布 距今已有 一年 有余 更新换代 当然 MIUI9 确切 信息 等待 官方消息',\n",
       " '骁龙 835 唯一 Windows10 桌面 平台 认证 ARM 处理器 高通 强调 不会 只 考虑 性能 屏蔽掉 小 核心 相反 正 联手 微软 找到 一种 适合 桌面 平台 兼顾 性能 功耗 完美 方案 报道 微软 已经 拿到 一些 源码 Windows10 更好 理解 big little 架构 资料 显示 骁龙 835 一款 集成 CPU GPU 基带 蓝牙 Wi Fi SoC 传统 Wintel 方案 节省 至少 30% PCB 空间 按计划 今年 Q4 华硕 惠普 联想 首发 骁龙 835Win10 电脑 预计 均 二合一 形态 产品 当然 高通 骁龙 未来 也许 见到 三星 Exynos 联发科 华为 麒麟 小米 澎湃 进入 Windows10 桌面 平台']"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "corpus[:2]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(89611, 846)\n"
     ]
    }
   ],
   "source": [
    "from sklearn.feature_extraction.text import CountVectorizer,TfidfTransformer\n",
    "# 计算corpus的TF-IDF\n",
    "countvectorizer = CountVectorizer(encoding='gb18030',min_df=0.015) #min_df最小词频\n",
    "tfidftransformer = TfidfTransformer()\n",
    "countvector = countvectorizer.fit_transform(corpus) # 计算词频\n",
    "tfidf = tfidftransformer.fit_transform(countvector) # 计算tfidf\n",
    "print(tfidf.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "846"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(countvectorizer.get_feature_names())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(89611, 846)"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 也可以直接用TfidfVectorizer求得tfidf值\n",
    "from sklearn.feature_extraction.text import TfidfVectorizer\n",
    "tfidf_vec = TfidfVectorizer(encoding='gb18030',min_df=0.015)\n",
    "tfidf2 = tfidf_vec.fit_transform(corpus)\n",
    "tfidf2.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "collapsed": true,
    "jupyter": {
     "outputs_hidden": true
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[0,\n",
       " 0,\n",
       " 0,\n",
       " 1,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 1,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 1,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 1,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 1,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 1,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 1,\n",
       " 0,\n",
       " 1,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 1,\n",
       " 0,\n",
       " 1,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 1,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 1,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 1,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 1,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 1,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 1,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 1,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 1,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 1,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 1,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 1,\n",
       " 0,\n",
       " 0,\n",
       " 1,\n",
       " 0,\n",
       " 0,\n",
       " 1,\n",
       " 0,\n",
       " 0,\n",
       " 1,\n",
       " 0,\n",
       " 0,\n",
       " 1,\n",
       " 0,\n",
       " 0,\n",
       " 1,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 1,\n",
       " 0,\n",
       " 0,\n",
       " 1,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 1,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 1,\n",
       " 0,\n",
       " 1,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 1,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 1,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " ...]"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 标记是否为自己的新闻\n",
    "label = list(map(lambda source: 1 if '新华社' in str(source) else 0,news.source))\n",
    "label"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "89611"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(label)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "# 数据集切分\n",
    "X_train,X_test,y_train,y_test = train_test_split(tfidf.toarray(),label,test_size = 0.3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "MultinomialNB()"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 朴素贝叶斯\n",
    "from sklearn.naive_bayes import MultinomialNB,BaseDiscreteNB\n",
    "model = MultinomialNB()\n",
    "model.fit(X_train,y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "准确率： 0.8904552893914596\n",
      "精确率： 0.9611932300272407\n",
      "召回率： 0.9120338983050847\n"
     ]
    }
   ],
   "source": [
    "from sklearn.metrics import accuracy_score,precision_score,recall_score\n",
    "y_predict = model.predict(X_test)\n",
    "print('准确率：',accuracy_score(y_test,y_predict))\n",
    "print('精确率：',precision_score(y_test,y_predict))\n",
    "print('召回率：',recall_score(y_test,y_predict))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "TP: Ture Positive 把正的判断为正的数目 True Positive,判断正确，且判为了正，即正的预测为正的。\n",
    "FN: False Negative 把正的错判为负的数目 False Negative,判断错误，且判为了负，即把正的判为了负的\n",
    "FP: False Positive 把负的错判为正的数目 False Positive, 判断错误，且判为了正，即把负的判为了正的\n",
    "TN: True Negative 把负的判为负的数目 True Negative,判断正确，且判为了负，即把负的判为了负的\n",
    "\n",
    "1. 精确率(Precision)\n",
    "精确率是相对于预测结果而言的，它表示的是预测为正的样本中有多少是对的；那么预测为正的样本就有两种可能来源，一种是把正的预测为正的，这类有TruePositive个, 另外一种是把负的错判为正的，这类有FalsePositive个，因此精确率即：P=TP/(TP+FP)\n",
    "\n",
    "2. 准确率 (Accuracy)\n",
    "准确率是指有在所有的判断中有多少判断正确的，即把正的判断为正的，还有把负的判断为负的；总共有 TP + FN + FP + TN 个，所以准确率：(TP+TN) / (TP+TN+FN+FP)\n",
    "\n",
    "3. 召回率 (Recall)\n",
    "召回率是相对于样本而言的，即样本中有多少正样本被预测正确了，这样的有TP个，所有的正样本有两个去向，一个是被判为正的，另一个是错判为负的，因此总共有TP+FN个，所以，召回率 R= TP / (TP+FN)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 使用模型进行风格预测\n",
    "prediction = model.predict(tfidf.toarray())\n",
    "labels = np.array(label)\n",
    "# compare_new_index有两列，prediction为预测，labels为真实\n",
    "compare_new_index = pd.DataFrame({'prediction':prediction,'labels':label})\n",
    "# 把0预测为1的index\n",
    "copy_news_index = compare_new_index[(compare_new_index['prediction']==1)&(compare_new_index['labels']==0)].index"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>prediction</th>\n",
       "      <th>labels</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   prediction  labels\n",
       "0           0       0\n",
       "1           0       0\n",
       "2           0       0\n",
       "3           1       1\n",
       "4           1       0"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "compare_new_index.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "89611条新闻里面，共有2882条把0预测为1可能为copy的新闻条数\n"
     ]
    }
   ],
   "source": [
    "print('{0}条新闻里面，共有{1}条把0预测为1可能为copy的新闻条数'.format(len(news),len(copy_news_index)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "78674"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 实际为新华社的新闻\n",
    "xinhuashe_news_index = compare_new_index[compare_new_index['labels']==1].index\n",
    "len(xinhuashe_news_index)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import Normalizer\n",
    "from sklearn.cluster import KMeans\n",
    "normalizer = Normalizer()\n",
    "# 余弦距离映射成欧氏距离\n",
    "scaled_array = normalizer.fit_transform(tfidf.toarray())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(89611,)"
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 使用Kmeans进行全量文档进行聚类\n",
    "kmeans = KMeans(n_clusters=25)\n",
    "k_labels = kmeans.fit_predict(scaled_array)\n",
    "k_labels.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 创建id_class\n",
    "id_class = {index:class_ for index,class_ in enumerate(k_labels)}\n",
    "from collections import defaultdict # 没有值可以自动填默认set()\n",
    "class_id = defaultdict(set)\n",
    "for index,class_ in id_class.items():\n",
    "    #只统计新华社发布的的class_id\n",
    "    if index in xinhuashe_news_index.tolist():\n",
    "        class_id[class_].add(index)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics.pairwise import cosine_similarity\n",
    "# 查找相似的文章\n",
    "def find_similar_text(cpindex,top=10):\n",
    "    # 只在新华社发布的文章中查找\n",
    "    dist_dict = {i:cosine_similarity(tfidf[cpindex],tfidf[i]) for i in class_id[id_class[cpindex]]}\n",
    "    # 从大到小进行排序\n",
    "    return sorted(dist_dict.items(),key=lambda x:x[1][0],reverse=True)[:top]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "是否在新华社 False\n",
      "是否在copy_news True\n"
     ]
    }
   ],
   "source": [
    "cpindex = 3351\n",
    "print('是否在新华社',cpindex in xinhuashe_news_index)\n",
    "print('是否在copy_news',cpindex in copy_news_index)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[(72469, array([[0.55848573]])), (35142, array([[0.55128967]])), (71965, array([[0.53383958]])), (64331, array([[0.5282473]])), (45357, array([[0.51886516]])), (16265, array([[0.51815343]])), (16953, array([[0.51800165]])), (12700, array([[0.51736635]])), (67054, array([[0.51522014]])), (16081, array([[0.51336075]]))]\n"
     ]
    }
   ],
   "source": [
    "similar_list = find_similar_text(cpindex)\n",
    "print(similar_list)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "怀疑抄袭：\n",
      " （原标题：中国团体游客7月起可从韩国襄阳机场免签入境）\n",
      "中新网6月20日电 据韩联社报道，韩国江原道政府6月19日表示，今年7月1日起至明年4月，中国3人以上团体游客可以免签从襄阳机场进入韩国，允许停留的时间从10天延长到15天，还可以不需经由济州直接访问首尔等首都圈地区。\n",
      "持冬奥会门票的中国游客在当地旅行社订购平昌冬奥会相关的旅游产品，可申请以团体游客的身份免签入韩，观看平昌冬奥会比赛，还能到首都圈地区旅游。\n",
      "江原道政府将与韩国法务部协商落实上述政策，以利用襄阳国际机场和束草邮轮港之便力挺平昌冬奥会成功举办。江原道政府还计划，加强宣传中国游客免签访韩的内容，以中国上海、广州等城市为中心，向各省级行政区政府的相关部门、航空部门、旅游行业相关协会等进行宣传。\n",
      "江原道知事(相当于省长)崔文洵表示，扩大免签范围有望吸引游客振兴当地经济，政府还将争取开通上海、广州、沈阳等定期航线，提高当地机场的竞争力。\n",
      "\n",
      "相似的原文：\n",
      " 　　新华社北京５月２３日电记者调查：出行泰国与越南须谨防“黑导游”\\n　　新华社记者杨舟　乐艳娜\\n　　端午假期即将到来，准备出国游玩的朋友需要注意，近来一些国家的“黑导游”颇为猖獗。特别是在中国游客较多的泰国和越南，“黑导游”为了多捞钱花样百出，游客们一定要擦亮眼睛。\\n　　（小标题）“黑导游”黑良心　“零团费”是根源\\n　　临时加旅游项目、诱导游客进店高价购物都是“黑导游”的捞钱之术。\\n　　五一假期到泰国游玩的２２名中国内蒙古游客就因碰到“黑导游”而遭遇“泰囧”：因为拒绝多付９０００泰铢（１０００泰铢约合２００元人民币）购买旅游项目，他们被女导游甩到路边。\\n　　在越南下龙湾，一些拒绝下车购物的游客不得不在全部车窗和空调都关闭的大巴内干等，耗到实在闷得受不了，就只能下车，在“黑导游”忽悠下，最后也进了店。\\n　　这些专门针对中国游客的所谓“免税店”都是有“门道”的，商品价格往往高于市价数倍，且只接待中国旅游团中佩戴店家认可标志的游客，不接待本地人或散客，以免被了解市价的本地人或做过功课的自由行散客“穿帮”。\\n　　“黑导游”在这个封闭环境里半诱导半威胁地哄骗客人购物，少有团队游客能抵住从众心理而不就范。\\n　　泰国和越南的业内人士均强调，“黑导游”难禁的根源在于一些旅行社组织“低价团”乃至“零价团”吸引游客。\\n　　在泰国，一些地接社为降低成本不雇当地正规导游，而选择“黑导游”带团，带游客去对接好的购物点和餐厅高消费，以回本盈利。\\n　　比如，一家不正规的国内组团社利用低于成本的超低价格吸引游客参团，并将游客按人头“卖”给泰国地接社。地接社再将游客以每人５０００泰铢的价格“卖”给导游。一个团通常为２０人左右，那么导游从接团开始就背负“债务”压力。\\n　　导游带团时还要支付过路费等各种形式的其他费用，前期付出大，后期必然希望通过诱导游客购物或参加自费行程等各种手段收回“成本”。\\n　　泰国本地正规导游不愿接受这么贵的“人头费”，泰国旅游法也不允许“人头费”的存在，于是“黑导游”便“应运而生”。\\n　　因此，中国游客要从源头减少遇到“黑导游”的概率，关键是拒绝参加低价团和“零价团”。\\n　　（小标题）游客多市场大　“黑导游”难禁止\\n　　泰国《旅游业及旅游从业者法》明确规定，在泰国做导游必须为泰籍人员，而且必须持有导游证，违法者将被处以高额罚款或有期徒刑。越南也不允许外国人当导游。可以这么说，外籍人士在泰国和越南担任导游就是“黑导游”。\\n　　泰国警方近期突击检查曼谷某酒店，抓获了正在接受导游培训的１３８人，其中７８人为外国籍人士，持旅游签证或学生签证等。调查显示，这次培训的内容包括如何向中国游客兜售乳胶枕头、洗面奶等商品，以及怎样逃票进入景区等。\\n　　业内人士透露，“黑导游”有些是知法犯法，但也有些是被骗来的。\\n　　“泰国地接社面向深圳招聘２０名地接导游，有广深珠领队经验优先，承诺与泰国公司签合同，包住宿，保证一年收入２０万。”有些不明情况的中国导游看到这类信息，被骗到泰国从事非法导游工作，收入远没有当初承诺的那么高，如果在泰被抓，所在旅行社也不会出面解决。\\n　　泰国和越南旅行社愿意用“黑导游”，与当地中文导游不足有很大关系。\\n　　以泰国为例，２０１６年访泰的中国大陆游客达８７５．７５万人次，而目前在泰国旅游和体育部登记注册的泰籍中文导游仅有５０００人左右。\\n　　越南也面临同样的问题。越南出入境管理局局长黎春园说，近年来，来自中国、韩国和俄罗斯等地游客大幅增加，而越南外语导游严重缺乏，这是一些旅行社非法聘用外国导游的原因之一。\\n　　（小标题）政府出重拳　打击“黑导游”\\n　　为了维护中国公民出境游权益，中国政府积极与其他国家合作。\\n　　中国国家旅游局与泰国旅游和体育部去年９月签署了《关于加强旅游市场监管合作的谅解备忘录》。备忘录包括３项主要内容，建立泰中联合工作组以保证旅游服务质量及游客安全，建立处理突发事件的合作应对机制，以及建立文明旅游宣传及人员培训机制。\\n　　泰国有关部门官员与业界代表也于去年１０月就打击“零团费”问题召开会议并达成４项决议，其中包括为中国旅行团设立每人每夜１０００泰铢的最低价、旅游附加项目总价不超过３０００铢、各方合作打击非法导游等内容。\\n　　业内人士介绍，泰国政府一直致力于打击“黑导游”，自去年８月底开始打击“零团费”旅游团后，打击“黑导游”力度也在加大，但若要根除这一现象，难度较大。\\n　　泰国职业导游协会副主席派吉·吉拉楞衮说，眼下泰国“黑导游”还有不少。有些机构在国外招聘导游，在泰国培训，培训地点不断变动。协会拍下了相关照片和视频，希望协助警方进一步打击“黑导游”。\\n　　泰国旅游警察副总指挥阿差尹·盖通说，泰国旅游警察会坚持打击“黑导游”。如民众发现有任何疑似“黑导游”的人出现，可及时报案。\\n　　在越南，政府监管机构对著名旅游城市芽庄、岘港等展开检查，把查到的“黑导游”遣送回国，关闭了不少只对中国人开放的“黑店”，“黑导游”问题有所缓解。（完）\n"
     ]
    }
   ],
   "source": [
    "print('怀疑抄袭：\\n',news.iloc[cpindex].content)\n",
    "# 找一篇相似的原文\n",
    "similar2 = similar_list[0][0]\n",
    "print('相似的原文：\\n',news.iloc[similar2].content)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3.8.0 64-bit ('Bi_env': venv)",
   "language": "python",
   "name": "python38064bitbienvvenvba07af95a1bb4b078aa8134bba84dff2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
